home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vbsqueez / vbsqz.frm < prev    next >
Text File  |  1995-09-06  |  12KB  |  227 lines

  1. VERSION 2.00
  2. Begin Form VBSqueeze 
  3.    BackColor       =   &H00C0C0C0&
  4.    BorderStyle     =   1  'Fixed Single
  5.    Caption         =   "VB Squeeze"
  6.    ClientHeight    =   405
  7.    ClientLeft      =   1110
  8.    ClientTop       =   1545
  9.    ClientWidth     =   1725
  10.    Height          =   810
  11.    Left            =   1050
  12.    LinkMode        =   1  'Source
  13.    LinkTopic       =   "Form1"
  14.    MaxButton       =   0   'False
  15.    MinButton       =   0   'False
  16.    ScaleHeight     =   405
  17.    ScaleWidth      =   1725
  18.    Top             =   1200
  19.    Width           =   1845
  20.    Begin CommandButton btnSave 
  21.       Caption         =   "&Save/Load Text"
  22.       Height          =   375
  23.       Left            =   15
  24.       TabIndex        =   0
  25.       Top             =   15
  26.       Width           =   1695
  27.    End
  28. End
  29. '*************************************************************'
  30. '*                         VB SQUEEZE                        *'
  31. '*                                                           *'
  32. '*  What is it?                                              *'
  33. '*  VB Squeeze is another useful(hopefully) little utility   *'
  34. '*  that will save some of you some time and make your life  *'
  35. '*  a little easier.                                         *'
  36. '*                                                           *'
  37. '*  What does it do?                                         *'
  38. '*  We all know that VB accumualates extra garbage in our    *'
  39. '*  Form files, and such, while we work, and the only way to *'
  40. '*  get rid of it is to do a SaveText/LoadText for each of   *'
  41. '*  our forms.  This can get to be very tedious indeed, so   *'
  42. '*  VB Squeeze will do it for you, for each file in your     *'
  43. '*  project.                                                 *'
  44. '*                                                           *'
  45. '*  How does it work?                                        *'
  46. '*  VB Squeeze uses SendKeys to activate VB and perform the  *'
  47. '*  necessary operations on each file.                       *'
  48. '*                                                           *'
  49. '*  WARNING!                                                 *'
  50. '*  I just got this idea and wanted to see if it would       *'
  51. '*  work so I threw it together very quickly. The code is    *'
  52. '*  commented but you will want to look it over for obvious  *'
  53. '*  bugs that I missed and places to improve it(like error   *'
  54. '*  checking of some sort). Since it relies on SendKeys it   *'
  55. '*  is not the most reliable method of doing this but, hey,  *'
  56. '*  it works. USE IT AT YOUR OWN RISK. If you modify and     *'
  57. '*  improve it I would love to hear about it. If you think   *'
  58. '*  it's a lousy idea and a complete waste of time I want    *'
  59. '*  to know that too.                                        *'
  60. '*                                                           *'
  61. '*  PLEASE!                                                  *'
  62. '*  Look through the code before you run it(and don't use    *'
  63. '*  it on anything important at first) so you know what it   *'
  64. '*  does to get the job done. You may want to modify it to   *'
  65. '*  operate on a single file instead of all the files in     *'
  66. '*  your project.                                            *'
  67. '*                                                           *'
  68. '*  NOTES:                                                   *'
  69. '*  The biggest note is this. If you have two files with     *'
  70. '*  the same prefix(i.e. MYAPP.FRM & MYAPP.BAS) then         *'
  71. '*  VB Squeeze will stop if they are consecutive in the      *'
  72. '*  project window(the global file seems to be the biggest   *'
  73. '*  culprit). The reason is this. As VB Squeeze moves down   *'
  74. '*  the list of files in the project window it compares the  *'
  75. '*  name of the last file with that of the current file,     *'
  76. '*  and, if they match, it assumes it's at the last file.    *'
  77. '*  I hope someone comes up with a better method for this.   *'
  78. '*                                                           *'
  79. '*  Why does only the prefix need to match? The filename is  *'
  80. '*  taken from the Code|Save dialog box and .TXT is appended *'
  81. '*  automatically.                                           *'
  82. '*                                                           *'
  83. '*  Error checking doesn't exist. You will want to add this  *'
  84. '*  for safety(check for pre-existing files and such).       *'
  85. '*                                                           *'
  86. '*  IMPROVEMENTS:                                            *'
  87. '*  Please do!  I don't have the time to really make this a  *'
  88. '*  priority project and I HATE doing the SaveText/LoadText  *'
  89. '*  mambo.                                                   *'
  90. '*                                                           *'
  91. '*  Maybe the saved text could be opened and all the         *'
  92. '*  comments and blank lines could be stripped to comapct    *'
  93. '*  code before compilation.                                 *'
  94. '*                                                           *'
  95. '*  Comments? Suggestions? I want 'em!                       *'
  96. '*                                                           *'
  97. '*  Gregg Irwin CIS:ID 72450,676                             *'
  98. '*************************************************************'
  99. DefInt A-Z
  100.  
  101. Declare Function FindWindow Lib "User" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Integer
  102. Declare Function GetActiveWindow Lib "User" () As Integer
  103. Declare Function GetWindowText Lib "User" (ByVal hWnd As Integer, ByVal lpString As String, ByVal nMaxChars As Integer) As Integer
  104. Declare Function SetActiveWindow Lib "User" (ByVal hWnd As Integer) As Integer
  105.  
  106. 'Const NULL = 0&      '--If you want to pass NULL to FindWindow
  107.  
  108. Dim FileName As String
  109. Dim OldFileName As String
  110.  
  111. Sub btnSave_Click ()
  112.     
  113.                                                     '-- Class name for VB = "wndclass_desked_gsk"
  114.                                                     '-- Caption for VB    = "Microsoft Visual Basic [design]"
  115.     VBhWnd = FindWindow("wndclass_desked_gsk", "Microsoft Visual Basic [design]")
  116.      
  117.     If Len(VBhWnd) Then                             '-- Make sure VB is running before we do anything
  118.         ActivehWnd = GetActiveWindow()
  119.         If VBhWnd <> ActivehWnd Then                '-- If VB isn't active then activate it.
  120.             PrevhWnd = SetActiveWindow(VBhWnd)      '-- Save the handle of the currently active window
  121.         End If                                      '   and activate VB.
  122.         
  123.  
  124.         Clipboard.Clear                             '-- Start with a clean clipboard
  125.         OldFileName = "!@#$%^&*()"                  '-- Initialize OldFileName so we don't have
  126.                                                     '   a match by accident or coinicidence.
  127. '------------------------------------------------------
  128. '-- Move to first file in project window
  129. '------------------------------------------------------
  130.         Do
  131.             SendKeys "%{F6}", True                  '-- Move to next VB owned window
  132.             WndCaption$ = Space$(13)                '-- Initialize a string for an API call
  133.             RtnLen = GetWindowText(GetActiveWindow(), WndCaption$, 12) '-- Get Window caption
  134.             WndCaption$ = Left$(WndCaption$, RtnLen)        '-- Strip Chr$(0)
  135.             If Right$(WndCaption$, 3) = "MAK" Then Exit Do  '-- We found the project window
  136.         Loop
  137.         SendKeys "{HOME}"                           '-- Move to first file
  138.         
  139. '------------------------------------------------------
  140. '-- For each file in the project...
  141. '    Save the code as text and then reload it to get
  142. '    rid of all the old trash that hangs around.
  143. '------------------------------------------------------
  144.         Do While OldFileName <> FileName
  145.             OldFileName = FileName                  '-- Reset file name for next iteration
  146.                                             
  147.             SendKeys "%CS", True                    '-- Code|Save
  148.              x = DoEvents()
  149.             
  150.             SendKeys